home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Arsenal Files 8
/
The Arsenal Files Collection #8 (Arsenal Computer) (1996).ISO
/
g_quake
/
server1.zip
/
_SRVMODS.PAT
< prev
next >
Wrap
Text File
|
1996-09-07
|
21KB
|
625 lines
diff -ur -x qcc -x *.exe -x *.list -x *.pl -x *.h qc-ori/buttons.qc qc/buttons.qc
--- qc-ori/buttons.qc Sat Aug 17 00:00:00 1996
+++ qc/buttons.qc Sat Sep 7 00:00:00 1996
@@ -55,6 +55,7 @@
{
if (other.classname != "player")
return;
+ if (other.player_status & PLAYER_IS_OBSERVER) return; //#jp#(Observer)
self.enemy = other;
button_fire ();
};
diff -ur -x qcc -x *.exe -x *.list -x *.pl -x *.h qc-ori/client.qc qc/client.qc
--- qc-ori/client.qc Sat Aug 17 00:00:00 1996
+++ qc/client.qc Sat Sep 7 00:00:00 1996
@@ -53,6 +53,7 @@
parm7 = self.ammo_cells;
parm8 = self.weapon;
parm9 = self.armortype * 100;
+ parm16 = self.player_status; //#jp#(PlayerStatus)
};
void() SetNewParms =
@@ -66,15 +67,20 @@
parm6 = 0;
parm8 = 1;
parm9 = 0;
+ parm16 = 0; //#jp#(PlayerStatus)
};
void() DecodeLevelParms =
{
+ self.player_status = parm16; //#jp#(PlayerStatus)
+ SkinRestoreSkinFromStatusFlag(self); //#jp#(Skin)
+if (!USE_MODULE_OBSERVER) { //#jp#(Observer)
if (serverflags)
{
if (world.model == "maps/start.bsp")
SetNewParms (); // take away all stuff on starting new episode
}
+} //#jp#(Observer)
self.items = parm1;
self.health = parm2;
@@ -143,6 +149,7 @@
// skip any text in deathmatch
if (deathmatch)
{
+ LevelSelectSelectLevel(); //#jp#(LevelSelect)
GotoNextMap ();
return;
}
@@ -288,6 +295,11 @@
if (other.classname != "player")
return;
+if (ExitRulesExitingIsNotAllowed(other)) { //#jp#(ExitRules)
+ T_Damage (other, world, other, 50000); //#jp#(ExitRules)
+ return; //#jp#(ExitRules)
+} //#jp#(ExitRules)
+
if (cvar("noexit"))
{
T_Damage (other, self, self, 50000);
@@ -343,7 +355,9 @@
if (coop)
{
// make a copy of the dead body for appearances sake
+ if (!(self.player_status & PLAYER_IS_OBSERVER)) {//#jp#(Observer)
CopyToBodyQue (self);
+ }//#jp#(Observer)
// get the spawn parms as they were at level start
setspawnparms (self);
// respawn
@@ -352,15 +366,24 @@
else if (deathmatch)
{
// make a copy of the dead body for appearances sake
+ if (!(self.player_status & PLAYER_IS_OBSERVER)) {//#jp#(Observer)
CopyToBodyQue (self);
+ }//#jp#(Observer)
// set default spawn parms
SetNewParms ();
+ parm16 = self.player_status; //#jp#(PlayerStatus)
// respawn
PutClientInServer ();
}
else
{ // restart the entire server
+ if (!(self.player_status & PLAYER_IS_OBSERVER)) {//#jp#(Observer)
localcmd ("restart\n");
+ } else { //#jp#(Observer)
+ SetNewParms(); //#jp#(Observer)
+ parm16 = self.player_status; //#jp#(Observer)//#jp#(PlayerStatus)
+ PutClientInServer (); //#jp#(Observer)
+ } //#jp#(Observer)
}
};
@@ -379,6 +402,12 @@
set_suicide_frame ();
self.modelindex = modelindex_player;
self.frags = self.frags - 2; // extra penalty
+ RankCountEvent(self,RANK_SUICIDE); //#jp#(Rank)
+ ServerConsoleClientSuicide(self); //#jp#(ServerConsole)
+ if (KickSuicider(self)) return; //#jp#(KickSuicider)
+ if (self.player_status & PLAYER_IS_OBSERVER) { //#jp#(Observer)
+ self.observer_status = OBSERVER_BECOME_OBSERVER;//#jp#(Observer)
+ } //#jp#(Observer)
respawn ();
};
@@ -479,7 +508,26 @@
// paustime is set by teleporters to keep the player from moving a while
self.pausetime = 0;
+if (!self.kick_suicider_lasttime) //#jp#(KickSuicider)
+ self.kick_suicider_lasttime = time - 100000; //#jp#(KickSuicider)
+if (!self.player_status) { //#jp#(PlayerStatus)
+ PlayerStatusSetFlag(self,PLAYER_IS_CLIENT); //#jp#(PlayerStatus)
+ if (USE_MODULE_OBSERVER) { //#jp#(Observer)
+ self.observer_status = OBSERVER_BECOME_OBSERVER; //#jp#(Observer)
+ } //#jp#(Observer)
+} //#jp#(PlayerStatus)
+if (self.player_status & PLAYER_IS_OBSERVER) { //#jp#(Observer)
+ // happens after level change //#jp#(Observer)
+ if (!(self.items & IT_AXE)) { //#jp#(Observer)
+ //dprint("PutClientInServer: stay observer after level change\n");//#jp#(debug)
+ self.observer_status = OBSERVER_BECOME_OBSERVER; //#jp#(Observer)
+ } //#jp#(Observer)
+} //#jp#(Observer)
+
spot = SelectSpawnPoint ();
+if (!(self.observer_status & OBSERVER_BECOME_OBSERVER)) { //#jp#(Observer)
+ spot = TelefragSelectSpawnPoint(spot); //#jp#(Telefrag)
+} //#jp#(Observer)
self.origin = spot.origin + '0 0 1';
self.angles = spot.angles;
@@ -492,6 +540,14 @@
setmodel (self, "progs/player.mdl");
modelindex_player = self.modelindex;
+if (self.observer_status & OBSERVER_BECOME_OBSERVER) { //#jp#(Observer)
+ //dprint("PutClientInServer: becoming observer\n"); //#jp#(debug)
+ ObserverBecomeObserver(self); //#jp#(Observer)
+ PlayerStatusSetFlag(self,PLAYER_IS_OBSERVER); //#jp#(Observer)
+ return; //#jp#(Observer)
+} //#jp#(Observer)
+ //dprint("PutClientInServer: spawning player regularly\n"); //#jp#(debug)
+
setsize (self, VEC_HULL_MIN, VEC_HULL_MAX);
self.view_ofs = '0 0 22';
@@ -737,6 +793,8 @@
return;
}
+ if (ObserverDeathThink()) return; //#jp#(Observer)
+
// wait for any button down
if (!self.button2 && !self.button1 && !self.button0)
return;
@@ -812,10 +870,12 @@
if (self.waterlevel != 3)
{
+if (!(self.player_status & PLAYER_IS_OBSERVER)) {//#jp#(Observer)
if (self.air_finished < time)
sound (self, CHAN_VOICE, "player/gasp2.wav", 1, ATTN_NORM);
else if (self.air_finished < time + 9)
sound (self, CHAN_VOICE, "player/gasp1.wav", 1, ATTN_NORM);
+}//#jp#(Observer)
self.air_finished = time + 12;
self.dmg = 2;
}
@@ -948,6 +1008,53 @@
return;
}
+ if (time > vote_checktime) { //#jp#(Vote)
+ VoteThink(); //#jp#(Vote)
+ } //#jp#(Vote)
+ if (!(self.player_status & PLAYER_PASSED_INIT_PHASE)) { //#jp#(PlayerStatus)
+ if (!(self.player_status & PLAYER_IS_INITIALIZED)) { //#jp#(PlayerStatus)
+ ModulesInitModules(self); //#jp#(Modules)
+ if (USE_MODULE_OBSERVER) { //#jp#(Observer)
+ sound (self, CHAN_BODY, "wizard/wsight.wav", 1, ATTN_NONE);//#jp#(Observer)
+ } //#jp#(Observer)
+ self.player_status_init_time = time; //#jp#(PlayerStatus)
+ PlayerStatusSetFlag(self,PLAYER_IS_INITIALIZED); //#jp#(PlayerStatus)
+ } //#jp#(PlayerStatus)
+ if (!(self.player_status & PLAYER_DID_INIT_CALLS)) { //#jp#(Init)
+ if (time > self.player_status_init_time + 1) { //#jp#(Init)
+ InitLetClientExecInit(self); //#jp#(Init)
+ PlayerStatusSetFlag(self,PLAYER_DID_INIT_CALLS); //#jp#(Init)
+ } //#jp#(Init)
+ } //#jp#(Init)
+ if (!(self.player_status & PLAYER_PASSED_MOTD)) { //#jp#(Motd)
+ MotdThink(); //#jp#(Motd)
+ } //#jp#(Motd)
+ if (time > self.player_status_init_time + 10) { //#jp#(PlayerStatus)
+ PlayerStatusSetFlag(self,PLAYER_PASSED_INIT_PHASE); //#jp#(PlayerStatus)
+ } //#jp#(PlayerStatus)
+ } //#jp#(PlayerStatus)
+ if (self.modules_level_inited != 2) { //#jp#(Modules)
+ if (!self.modules_level_inited) { //#jp#(Modules)
+ if (USE_MODULE_OBSERVER) { //#jp#(Observer)
+ bprint (self.netname); //#jp#(Observer)
+ bprint (" entered the game\n"); //#jp#(Observer)
+ } //#jp#(Observer)
+ if (!exitrules_inited) { ExitRulesSetValues(); } //#jp#(ExitRules)
+ self.modules_level_entertime = time; //#jp#(Modules)
+ self.modules_level_inited = 1; //#jp#(Modules)
+ } //#jp#(Observer)
+ if (time - self.modules_level_entertime > 2) { //#jp#(Modules)
+ if (self.player_status & PLAYER_PASSED_INIT_PHASE) { //#jp#(PlayerStatus)
+ ModulesShowLevelInfo(self); //#jp#(Modules)
+ self.modules_level_inited = 2; //#jp#(Modules)
+ } //#jp#(PlayerStatus)
+ } //#jp#(Modules)
+ } //#jp#(Modules)
+ if (self.player_status & PLAYER_IS_OBSERVER) { //#jp#(Observer)
+ ObserverThink(); //#jp#(Observer)
+ return; //#jp#(Observer)
+ } //#jp#(Observer)
+
if (self.deadflag == DEAD_DYING)
return; // dying, so do nothing
@@ -1173,9 +1280,12 @@
*/
void() ClientConnect =
{
+if (!USE_MODULE_OBSERVER) {//#jp#(Observer)
bprint (self.netname);
bprint (" entered the game\n");
+}//#jp#(Observer)
+ ServerConsolePlayerEntered(self); //#jp#(ServerConsole)
// a client connecting during an intermission can cause problems
if (intermission_running)
ExitIntermission ();
@@ -1203,6 +1313,7 @@
bprint (" frags\n");
sound (self, CHAN_BODY, "player/tornoff2.wav", 1, ATTN_NONE);
set_suicide_frame ();
+ PlayerStatusSetFlag(self,PLAYER_DISCONNECTED); //#jp#(PlayerStatus)
};
/*
@@ -1218,6 +1329,9 @@
local string deathstring, deathstring2;
rnum = random();
+ RankClientObituary(targ,attacker); //#jp#(Rank)
+ ServerConsoleClientObituary(targ,attacker); //#jp#(ServerConsole)
+
if (targ.classname == "player")
{
if (attacker.classname == "teledeath")
@@ -1247,6 +1361,12 @@
{
// killed self
attacker.frags = attacker.frags - 1;
+if (targ.exitrules_death) { //#jp#(ExitRules)
+ if (USE_MODULE_EXITRULES) { //#jp#(ExitRules)
+ ExitRulesClientObituary(targ); //#jp#(ExitRules)
+ return; //#jp#(ExitRules)
+ } //#jp#(ExitRules)
+} //#jp#(ExitRules)
bprint (targ.netname);
if (targ.weapon == 64 && targ.waterlevel > 1)
diff -ur -x qcc -x *.exe -x *.list -x *.pl -x *.h qc-ori/items.qc qc/items.qc
--- qc-ori/items.qc Sat Aug 17 00:00:00 1996
+++ qc/items.qc Sat Sep 7 00:00:00 1996
@@ -168,10 +168,12 @@
return;
}
+ if (!USE_MODULE_MESSAGES || messages_flag & MESSAGES_HEALTH) { //#jp#(Messages)
sprint(other, "You receive ");
s = ftos(self.healamount);
sprint(other, s);
sprint(other, " health\n");
+ } //#jp#(Messages)
// health touch sound
sound(other, CHAN_ITEM, self.noise, 1, ATTN_NORM);
@@ -275,6 +277,7 @@
self.nextthink = time + 20;
self.think = SUB_regen;
+ if (!USE_MODULE_MESSAGES || messages_flag & MESSAGES_ARMOR) //#jp#(Messages)
sprint(other, "You got armor\n");
// armor touch sound
sound(other, CHAN_ITEM, "items/armor1.wav", 1, ATTN_NORM);
@@ -460,9 +463,11 @@
else
objerror ("weapon_touch: unknown classname");
+ if (!USE_MODULE_MESSAGES || messages_flag & MESSAGES_WEAPON) {//#jp#(Messages)
sprint (other, "You got the ");
sprint (other, self.netname);
sprint (other, "\n");
+ }//#jp#(Messages)
// weapon touch sound
sound (other, CHAN_ITEM, "weapons/pkup.wav", 1, ATTN_NORM);
stuffcmd (other, "bf\n");
@@ -645,9 +650,11 @@
bound_other_ammo ();
+ if (!USE_MODULE_MESSAGES || messages_flag & MESSAGES_AMMO) {//#jp#(Messages)
sprint (other, "You got the ");
sprint (other, self.netname);
sprint (other, "\n");
+ }//#jp#(Messages)
// ammo touch sound
sound (other, CHAN_ITEM, "weapons/lock4.wav", 1, ATTN_NORM);
stuffcmd (other, "bf\n");
@@ -879,9 +886,11 @@
if (other.items & self.items)
return;
+ if (!USE_MODULE_MESSAGES || messages_flag & MESSAGES_KEY) {//#jp#(Messages)
sprint (other, "You got the ");
sprint (other, self.netname);
sprint (other,"\n");
+ }//#jp#(Messages)
sound (other, CHAN_ITEM, self.noise, 1, ATTN_NORM);
stuffcmd (other, "bf\n");
@@ -1086,9 +1095,11 @@
if (other.health <= 0)
return;
+ if (!USE_MODULE_MESSAGES || messages_flag & MESSAGES_POWERUP) {//#jp#(Messages)
sprint (other, "You got the ");
sprint (other, self.netname);
sprint (other,"\n");
+ }//#jp#(Messages)
if (deathmatch)
{
@@ -1254,6 +1265,7 @@
bound_other_ammo ();
+ if (!USE_MODULE_MESSAGES || messages_flag & MESSAGES_BACKPACK) {//#jp#(Messages)
sprint (other, "You get ");
if (self.ammo_shells)
@@ -1282,6 +1294,8 @@
}
sprint (other, "\n");
+ }//#jp#(Messages)
+
// backpack touch sound
sound (other, CHAN_ITEM, "weapons/lock4.wav", 1, ATTN_NORM);
stuffcmd (other, "bf\n");
diff -ur -x qcc -x *.exe -x *.list -x *.pl -x *.h qc-ori/progs.src qc/progs.src
--- qc-ori/progs.src Sat Aug 17 00:00:00 1996
+++ qc/progs.src Sat Sep 7 00:00:00 1996
@@ -1,6 +1,24 @@
../progs.dat
defs.qc
+
+_modules.qh
+_plystat.qh
+_exitrls.qh
+_init.qh
+_kckscdr.qh
+_levsel.qh
+_lightng.qh
+_message.qh
+_motd.qh
+_rank.qh
+_skin.qh
+_observe.qh
+_servhlp.qh
+_servcon.qh
+_telefrg.qh
+_vote.qh
+
subs.qc
fight.qc
ai.qc
@@ -33,3 +51,22 @@
shalrath.qc // registered
enforcer.qc // registered
oldone.qc // registered
+
+_plystat.qc
+_exitrls.qc
+_init.qc
+_kckscdr.qc
+_levsel.qc
+_lightng.qc
+_message.qc
+_modules.qc
+_motd.qc
+_observe.qc
+_skin.qc
+_rank.qc
+_servcon.qc
+_servhlp.qc
+_telefrg.qc
+_vote.qc
+
+
diff -ur -x qcc -x *.exe -x *.list -x *.pl -x *.h qc-ori/weapons.qc qc/weapons.qc
--- qc-ori/weapons.qc Sat Aug 17 00:00:00 1996
+++ qc/weapons.qc Sat Sep 7 00:00:00 1996
@@ -471,6 +471,20 @@
return;
}
+ if (USE_MODULE_LIGHTNING) { //#jp#(Lightning)
+ if (self.waterlevel > 2) { //#jp#(Lightning)
+ if (USE_MODULE_LIGHTNING) { //#jp#(Lightning)
+ local float ddd; //#jp#(Lightning)
+ ddd = 20*self.ammo_cells; //#jp#(Lightning)
+ if (ddd > 400) ddd = 400; //#jp#(Lightning)
+ T_RadiusDamage (self, self, ddd, world); //#jp#(Lightning)
+ self.ammo_cells = 0; //#jp#(Lightning)
+ W_SetCurrentAmmo (); //#jp#(Lightning)
+ return; //#jp#(Lightning)
+ } //#jp#(Lightning)
+ } //#jp#(Lightning)
+ } //#jp#(Lightning)
+ else { //#jp#(Lightning)
// explode if under water
if (self.waterlevel > 1)
{
@@ -479,12 +493,15 @@
W_SetCurrentAmmo ();
return;
}
+ } //#jp#(Lightning)
+ if (!USE_MODULE_LIGHTNING) { //#jp#(Lightning)
if (self.t_width < time)
{
sound (self, CHAN_WEAPON, "weapons/lhit.wav", 1, ATTN_NORM);
self.t_width = time + 0.6;
}
+ } //#jp#(Lightning)
self.punchangle_x = -2;
self.currentammo = self.ammo_cells = self.ammo_cells - 1;
@@ -493,6 +510,30 @@
traceline (org, org + v_forward*600, TRUE, self);
+ if (USE_MODULE_LIGHTNING) { //#jp#(Lightning)
+ local float ddd, sss;
+ if (self.lightning_sound_lasttime < 0) sss = 1;
+ else if (self.lightning_sound_nexttime < time) sss = 1;
+ if (self.lightning_sound_lasttime + 0.1 <= time) {
+ ddd = vlen(trace_endpos - self.lightning_target);
+ if (ddd > 10) {
+ if (random() > 0.3) sss = 2;
+ }
+ }
+ if (sss) {
+ if (sss == 2) {
+ sound (self, CHAN_WEAPON, "weapons/lstart.wav", 1, ATTN_NORM);
+ self.lightning_sound_nexttime = time + 0.6;
+ }
+ else if (sss == 1) {
+ sound (self, CHAN_WEAPON, "weapons/lhit.wav", 1, ATTN_NORM);
+ self.lightning_sound_nexttime = time + 0.6;
+ }
+ self.lightning_sound_lasttime = time;
+ self.lightning_target = trace_endpos;
+ }
+ }
+
WriteByte (MSG_BROADCAST, SVC_TEMPENTITY);
WriteByte (MSG_BROADCAST, TE_LIGHTNING2);
WriteEntity (MSG_BROADCAST, self);
@@ -940,6 +981,7 @@
{
player_light1();
self.attack_finished = time + 0.1;
+ self.lightning_sound_lasttime = -1;//#jp#(Lightning)
sound (self, CHAN_AUTO, "weapons/lstart.wav", 1, ATTN_NORM);
}
};
@@ -954,6 +996,8 @@
{
local float it, am, fl;
+ if (self.player_status & PLAYER_IS_OBSERVER) return; //#jp#(Observer)
+
it = self.items;
am = 0;
@@ -1066,6 +1110,15 @@
void() CycleWeaponCommand =
{
local float it, am;
+
+ // Once I observed a 'runaway loop error' //#jp#(Bugfix)
+ // in this routine. I don't understand //#jp#(Bugfix)
+ // what it really caused, but to avoid it in //#jp#(Bugfix)
+ // the future the lines marked 'Bugfix' //#jp#(Bugfix)
+ // have been added to this routine. //#jp#(Bugfix)
+ local float weapon_old; //#jp#(Bugfix)
+ weapon_old = self.weapon; //#jp#(Bugfix)
+ if (self.player_status & PLAYER_IS_OBSERVER) return; //#jp#(Observer)
it = self.items;
self.impulse = 0;
@@ -1126,6 +1179,12 @@
W_SetCurrentAmmo ();
return;
}
+ if (weapon_old == self.weapon) { //#jp#(Bugfix)
+ dprint("CycleWeaponCommand: warning: avoiding runaway loop error caused by ");//#jp#(Bugfix)
+ dprint(self.netname); //#jp#(Bugfix)
+ dprint("\n"); //#jp#(Bugfix)
+ return; //#jp#(Bugfix)
+ } //#jp#(Bugfix)
}
};
@@ -1160,6 +1219,8 @@
*/
void() ImpulseCommands =
{
+ if (self.impulse) { //#jp#(Modules)
+
if (self.impulse >= 1 && self.impulse <= 8)
W_ChangeWeapon ();
@@ -1172,6 +1233,62 @@
if (self.impulse == 255)
QuadCheat ();
+
+ if (self.impulse >= 200) { //#jp#(Modules)
+ if (self.impulse == 200) { //#jp#(Skin)
+ if (USE_MODULE_SKIN) SkinUseOtherSkin(self,1); //#jp#(Skin)
+ } //#jp#(Skin)
+ else if (self.impulse == 201) { //#jp#(Skin)
+ if (USE_MODULE_SKIN) SkinUseOtherSkin(self,(-1)); //#jp#(Skin)
+ } //#jp#(Skin)
+ else if (self.impulse == 202) { //#jp#(Skin)
+ if (USE_MODULE_SKIN) SkinHelp(self); //#jp#(Skin)
+ } //#jp#(Skin)
+ else if (self.impulse == 203) { //#jp#(Rank)
+ if (USE_MODULE_RANK) RankDumpRanksToConsole(self);//#jp#(Rank)
+ } //#jp#(Rank)
+ else if (self.impulse == 204) { //#jp#(Rank)
+ if (USE_MODULE_RANK) RankHelp(self); //#jp#(Rank)
+ } //#jp#(Rank)
+ else if (self.impulse == 205) { //#jp#(Observer)
+ if (USE_MODULE_OBSERVER) ObserverHelp(self); //#jp#(Observer)
+ } //#jp#(Observer)
+ else if (self.impulse == 206) { //#jp#(Observer)
+ if (USE_MODULE_OBSERVER) ObserverNoclip(self); //#jp#(Observer)
+ } //#jp#(Observer)
+ else if (self.impulse == 207) { //#jp#(ServerHelp)
+ if (USE_MODULE_SERVERHELP) ServerHelpShowHelp(self);//#jp#(ServerHelp)
+ } //#jp#(ServerHelp)
+ else if (self.impulse == 208) { //#jp#(Init)
+ if (InitCallIsPermitted(self)) { //#jp#(Init)
+ stuffcmd(self,"init;\n"); //#jp#(Init)
+ } //#jp#(Init)
+ } //#jp#(Init)
+ else if (self.impulse == 209) { //#jp#(Init)
+ if (InitCallIsPermitted(self)) { //#jp#(Init)
+ if (USE_MODULE_SKIN) { //#jp#(Skin)
+ SkinQuietlyUseOtherSkin(self,1); //#jp#(Skin)
+ } //#jp#(Skin)
+ stuffcmd(self,"init;\n"); //#jp#(Init)
+ } //#jp#(Init)
+ } //#jp#(Init)
+ else if (self.impulse == 210) { //#jp#(ExitRules)
+ if (USE_MODULE_EXITRULES) ExitRulesHelp(self); //#jp#(ExitRules)
+ } //#jp#(ExitRules)
+ else if (self.impulse == 211) { //#jp#(VoteExit)
+ if (USE_MODULE_VOTE) VoteHelp(self); //#jp#(Vote)
+ } //#jp#(Vote)
+ else if (self.impulse == 212) { //#jp#(VoteExit)
+ if (USE_MODULE_VOTE) VoteShowVotes(self); //#jp#(Vote)
+ } //#jp#(Vote)
+ else if (self.impulse == 213) { //#jp#(Vote)
+ if (USE_MODULE_VOTE) VoteExitVote(self); //#jp#(Vote)
+ } //#jp#(Vote)
+ else if (self.impulse == 214) { //#jp#(Vote)//#jp#(ExitRules)
+ if (USE_MODULE_VOTE) VoteExitRulesVote(self); //#jp#(Vote)//#jp#(ExitRules)
+ } //#jp#(Vote)//#jp#(ExitRules)
+ } //#jp#(Modules)
+ } //#jp#(Modules)
self.impulse = 0;
};
diff -ur -x qcc -x *.exe -x *.list -x *.pl -x *.h qc-ori/world.qc qc/world.qc
--- qc-ori/world.qc Sat Aug 17 00:00:00 1996
+++ qc/world.qc Sat Sep 7 00:00:00 1996
@@ -254,6 +254,10 @@
precache_sound ("misc/water1.wav"); // swimming
precache_sound ("misc/water2.wav"); // swimming
+if (USE_MODULE_OBSERVER) { //#jp#(Observer)
+ precache_sound ("wizard/wsight.wav"); //#jp#(Observer)
+} //#jp#(Observer)
+
precache_model ("progs/player.mdl");
precache_model ("progs/eyes.mdl");
precache_model ("progs/h_player.mdl");
@@ -377,6 +381,7 @@
// respawned elsewhere
void(entity ent) CopyToBodyQue =
{
+ bodyque_head.skin = ent.skin; //#jp#(Skin)
bodyque_head.angles = ent.angles;
bodyque_head.model = ent.model;
bodyque_head.modelindex = ent.modelindex;